package com.dcy.znoa.domain.publiz;

import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.activerecord.Model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;

/**
 * <p>
 * 场所表：挨千刀的树形
 * </p>
 *
 * @author cook
 * @since 2018-04-27
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("place")
public class Place extends Model<Place> {

    private static final long serialVersionUID = 1L;

    /**
     * 场所ID
     */
	@TableId(value="place_id", type= IdType.AUTO)
	private Long placeId;
    /**
     * 场所名称
     */
	@TableField("place_name")
	private String placeName;
    /**
     * 场所级别：从1开始，1为最大(园区级)，2级是1级的下级部门（公司级）
     */
	@TableField("place_level")
	private Integer placeLevel;
    /**
     * 场所归属类型：1 园区 2 公司 3 食堂 4 停车场 99 其他，不能留空(公司的子场所 的 类型placeType  还是公司)
     */
	@TableField("place_type")
	private Integer placeType;
    /**
     * 上级场所ID
     */
	@TableField("p_place_id")
	private Long pPlaceId;
    /**
     * 归属实体ID，有可能是园区ID，也可能是企业ID,也有可能是物业id
     */
	@TableField("entity_id")
	private Long entityId;
    /**
     * 记录时间
     */
	@TableField("create_time")
	private Date createTime;
    /**
     * 创建人id
     */
	@TableField("create_oper_id")
	private Long createOperId;
    /**
     * 更新时间
     */
	@TableField("update_time")
	private Date updateTime;
    /**
     * 创建人id
     */
	@TableField("update_oper_id")
	private Long updateOperId;

	@TableField(exist = false)
	private Integer canEdit;//是否可编辑 0 不可以 1 可以
    /**
     * 有效标记 不要这个字段，以免脏数据过多
     */
//	@TableField("valid_flag")
//	private Integer validFlag;

	@TableField(exist = false)
	private List<Place> subPlaceList;

//
//	public Integer getPlaceId() {
//		return placeId;
//	}
//
//	public void setPlaceId(Integer placeId) {
//		this.placeId = placeId;
//	}
//
//	public String getPlaceName() {
//		return placeName;
//	}
//
//	public void setPlaceName(String placeName) {
//		this.placeName = placeName;
//	}
//
//	public Integer getPlaceLevel() {
//		return placeLevel;
//	}
//
//	public void setPlaceLevel(Integer placeLevel) {
//		this.placeLevel = placeLevel;
//	}
//
//	public Integer getPlaceType() {
//		return placeType;
//	}
//
//	public void setPlaceType(Integer placeType) {
//		this.placeType = placeType;
//	}
//
//	public Integer getpPlaceId() {
//		return pPlaceId;
//	}
//
//	public void setpPlaceId(Integer pPlaceId) {
//		this.pPlaceId = pPlaceId;
//	}
//
//	public Integer getEntityId() {
//		return entityId;
//	}
//
//	public void setEntityId(Integer entityId) {
//		this.entityId = entityId;
//	}
//
//	public Date getCreateTime() {
//		return createTime;
//	}
//
//	public void setCreateTime(Date createTime) {
//		this.createTime = createTime;
//	}
//
//	public Integer getCreateOperId() {
//		return createOperId;
//	}
//
//	public void setCreateOperId(Integer createOperId) {
//		this.createOperId = createOperId;
//	}
//
//	public Date getUpdateTime() {
//		return updateTime;
//	}
//
//	public void setUpdateTime(Date updateTime) {
//		this.updateTime = updateTime;
//	}
//
//	public Integer getUpdateOperId() {
//		return updateOperId;
//	}
//
//	public void setUpdateOperId(Integer updateOperId) {
//		this.updateOperId = updateOperId;
//	}
//
//	public Integer getValidFlag() {
//		return validFlag;
//	}
//
//	public void setValidFlag(Integer validFlag) {
//		this.validFlag = validFlag;
//	}

	public Place(String placeName, Integer placeLevel, Integer placeType, Long pPlaceId, Long entityId, Long createOperId) {
		this.placeName = placeName;
		this.placeLevel = placeLevel;
		this.placeType = placeType;
		this.pPlaceId = pPlaceId;
		this.entityId = entityId;
		this.createOperId = createOperId;
		this.createTime = new Date();
	}

	@Override
	protected Serializable pkVal() {
		return this.placeId;
	}

}
